iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0
Security

威脅情資分析與挑戰系列 第 10

[Day 10] 開源威脅情資平台 - OpenCTI

  • 分享至 

  • xImage
  •  

OpenCTI 是一個開源平台,允許組織管理其網路威脅情報[1],
我在 SecTools.tw 曾發了一篇用 docker 來搭建 OpenCTI,
並抓取 AlienVault 的資料,
詳細可參考 https://sectools.tw/opencti-docker-alienvault/

所以這篇比較著重在平台的介紹,
大部分的資料來源都是官方文件[2]
我們大概分成幾個層面:

  • 資料架構
  • 系統配置
  • 功能
  • 連結器(接收情資的來源)

目前可能不會提到共同參與開源專案開發的部分

資料架構

OpenCTI 的資料儲存採用的是 Graph Model,
圖模型有兩個實體類型:

  • 節點(Node): 就是之前提到的 IoC 都屬於 Node
  • 邊(Edge):舉例說明 惡意IP 是從某 APT 組織的 C2 Server,那描述這層關係的就是邊

儲存時為了更容易敘述不同情資之間的關係,採用的是 STIX 格式儲存,
又可以分成:

  • Stix Domain Object (SDO): 攻擊樣式、MITRE ID (TTPs) https://attack.mitre.org/ 、攻擊組織、來源
  • Stix Cyber Observable (SCO): 就是 IoC,有 hash, email, domain, ip, email, cve, filename, etc.
  • Stix Relationship Object (SRO): 描述關係,在哪看到或關聯自什麼
  • STIX bundle:比較像是擴充欄位,我有看過一篇論文,他利用這個 bundle 放了自己的 feature 上去,因為這合乎規範,所以其他 ISAC 也吃。

其餘資料可參考 https://luatix.notion.site/Data-model-4427344d93a74fe194d5a52ce4a41a8d

系統配置

OpenCTI 其實算是多個服務的集合,前幾篇我有說我的配置給 8核心 16G 記憶體還是會當機,今天仔細看了他們官方的最低要求。

  • CPU: 6 cores
  • RAM: 16GB
  • Disk: SSD
  • Disk Space: > 32GB

其他依賴服務
Elastic Search

  • CPU: 2 cores
  • RAM: 8GB
  • Disk: Normal
  • Disk Space: > 16GB

MinIO

  • CPU: 1 cores
  • RAM: 128 MB
  • Disk: Normal
  • Disk Space: 1 GB

Redis

  • CPU: 1 cores
  • RAM: 512 MB
  • Disk: Normal
  • Disk Space: > 128 MB

RabbitMQ

  • CPU: 1 cores
  • RAM: 512 MB
  • Disk: Normal
  • Disk Space: 128MB

Workers and connectors (主要取得情資的來源,這非常重要,雖然他有給很多寫好的docker,供我們直接串接,但是不熟 docker-compose,可能會出事,例如 connectors 所在的 docker network 跟 OpenCTI 不同,結果根本連不上...)

  • CPU: 1 cores
  • RAM: 128 MB
  • Disk: Normal
  • Disk Space: 128 MB

所以知道我為什麼會當機了吧...配太少拉

連接器 Connector

雖然其他情資平台可能會寫 API 讓其他人好方便處理 CTI,
但要能無痛匯入 OpenCTI 就使用 OpenCTI 準備好的 Connector 吧!
內部設定可參考 https://www.notion.so/Connectors-4586c588462d4a1fb5e661f2d9837db8
另外他們在 github 上放了很多寫好的 connector
https://github.com/OpenCTI-Platform/connectors/tree/master/external-import
(我寫的那篇就是用 alienValut)

其實我們追一下 code

# -*- coding: utf-8 -*-
"""OpenCTI AlienVault connector main module."""

from alienvault import AlienVault

if __name__ == "__main__":
    connector = AlienVault()
    connector.run()

可以看到他們也是用 STIX

from stix2 import ObjectPath  # type: ignore 

從 Dockerfile 發現呼叫了 entrypoint.sh

#!/bin/sh

# Correct working directory
cd /opt/opencti-connector-alienvault

# Start the connector
python main.py

回到上面那段 AlienVault()

然後發現 AlienVault 的格式

https://ithelp.ithome.com.tw/upload/images/20220914/201512019ritclN1vl.jpg

隨便找一篇對應一下欄位,大部分都會對到

不過不知道發生什麼事,寫這篇文時跑去抓, Pulses 都空的...

https://ithelp.ithome.com.tw/upload/images/20220914/20151201uK57hxoWmV.jpg

之後有空再回頭看看

其實這部分單純是喜歡追一下 code,說不定哪天就要自己寫一個,回饋一下開源社群。

小結

我發現其他人寫的文章第一天都會是前言然後整個三十天的規劃..,我比較像是想到什麼寫什麼,缺少一些邏輯,
我可能在最後一天再寫一個統整部分,明天我們針對一兩個抓到的情資,在 OpenCTI 做一些人工的分析。

Reference

  1. 開源威脅情資分享平台 OpenCTI. 陳勝舢. (2022). https://sectools.tw/opencti-docker-alienvault/
  2. OpenCTI Public Knowledge Base. (2022). https://luatix.notion.site/OpenCTI-Public-Knowledge-Base-d411e5e477734c59887dad3649f20518

上一篇
[Day 9] 威脅情資概述 - 威脅情資平台 Threat Intelligence Platform
下一篇
[Day 11] 威脅情資分析初探 (上)
系列文
威脅情資分析與挑戰15
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言